{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lab_9.6.1_Support_Vector_Classifiers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import accuracy_score,confusion_matrix\n",
    "\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "#set seed \n",
    "np.random.seed(1)\n",
    "X = np.random.normal(size = (20,2))\n",
    "y = np.array([0]*10 + [1]*10)  #maked an array which has ten 0, and ten 1 \n",
    "\n",
    "X[y==1,] = X[y==1,] + 1 #here, we are adding 1 to all the observations where y = 1 #can you guess why\n",
    "# The reason is to make the classes more separable than before"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "NOTE:- the classes names are 0,1 instead of -1,+1 as in the book, becase when earlier i chose -1,+1 the graph from sns.scatterplot had three hue, -1,0,+1 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.624345</td>\n",
       "      <td>-0.611756</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.528172</td>\n",
       "      <td>-1.072969</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.865408</td>\n",
       "      <td>-2.301539</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.744812</td>\n",
       "      <td>-0.761207</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.319039</td>\n",
       "      <td>-0.249370</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         X1        X2  y\n",
       "0  1.624345 -0.611756  0\n",
       "1 -0.528172 -1.072969  0\n",
       "2  0.865408 -2.301539  0\n",
       "3  1.744812 -0.761207  0\n",
       "4  0.319039 -0.249370  0"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#making a dataframe\n",
    "df = pd.DataFrame({'X1':X[:,0],'X2':X[:,1],'y':y})\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x18241f39e10>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (10,6))\n",
    "sns.scatterplot(df['X1'],df['X2'],hue = df['y'],s = 80) # s controls the size of the points"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Just as we were expecting (from the text), the data is not linearly separable into two classes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fitting the svm and visualizing the results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='auto_deprecated',\n",
       "    kernel='linear', max_iter=-1, probability=False, random_state=None,\n",
       "    shrinking=True, tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm = SVC(kernel='linear',C = 10)\n",
    "svm.fit(df.drop('y',axis = 1),df['y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'X2')"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmAAAAFzCAYAAACZwbV4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXiU5b3/8c93kpBANpawBRDFILKoCIhYcEOrFtEetVpplbZaUS85p1Xbnqq/c+xir3qOx/bnT6sVl7ZW5RSrHi24UhcUewRERRFERFFkk0ggCWsy398fCeAwSdgy9zOTeb+uK9fFfOfJM18YIJ+5n/u5b3N3AQAAIJxY1A0AAABkGwIYAABAYAQwAACAwAhgAAAAgRHAAAAAAiOAAQAABJYbdQP75LXbWTMDAACkv1ieNOoKa/bpkL0AAACAAAYAABAcAQwAACCwyAKYmRWY2Rwze9vMFprZz6PqBQAAIKQoJ+FvlTTW3WvMLE/Sq2b2tLv/776cJC5TbU5n1ecWSGp2rluEXDl1W1RY/4Vi4h4CAAAQYQDzhl3Aaxof5jV+7XNCqc3prLyijiqyelka5i93aasXqLZGKq6vjLodAACQBiKdA2ZmOWb2lqS1kp5399ebOGaSmc0zs3lTnpiddI763ALlp2n4kiQzKd/qG0foAAAAIl4HzN3rJQ01s46SHjezIe7+7m7HTJE0RVIz64BZ2oavHRr6S/MmAQBAMGlxF6S7V0l6SdIZEbey35555Q0NGHelKk6fpJvv+WvU7QAAgDQW5V2QXRtHvmRm7SWdKmlxVP0ciPr6el110916+u4b9d7ffqepT83Se0s/ibotAACQpqK8BNlT0p/MLEcNQXCau09P5QuOvOgGrduwOaleVtpecx781X6fd847H6jioJ7q16eHJOnCrx2vJ154XYMqDtrvcwIAgLYryrsgF0g6OuRrrtuwWYMv/21SfeHdVx/QeT9bU6k+Pcp2Pu7do0yvL3j/gM4JAADarrSYA5bpGlbUSGRMugcAAM0ggLWC3j3K9OnqdTsfr1i9TuXdOkfYEQAASGcEsFZwzJD++mD5Sn20YrW2bduu/376FZ198rFRtwUAANJUpOuAtRW5uTm644bLdfplP1N9PK5LzjlVg/szAR8AADQtqwJYWWn7Jifcl5W2P+BzjztxhMadOOKAzwMAANq+rApgB7LUBAAAQGthDhgAAEBgBDAAAIDACGAAAACBEcAAAAACI4ABAAAERgBrBZfccJu6jblYQ86eHHUrAAAgAxDAWsF3zzlFz0z5WdRtAACADJGVAWzd+o06b/IvVFm1sVXOd8KIIepcWtQq5wIAAG1fVgawBx57Vus/W6o/Pfps1K0AAIAslHUBbN36jZr+/Iu669zumv78i602CgYAALC3si6APfDYsxp/qGlA9wKNP9QYBQMAAMFlVQDbMfo1cXiJJGni8BJGwQAAQHBZFcB2jH6VFTXsQV5WlNsqo2ATfnSLjpvwE73/8WfqffL3dN+jz7VGuwAAoI3KjbqBkF6a87ZWrtqqh99ZlVAvX/e2rrn0/P0+79T/+vGBtgYAALJIVgWwJ+++KeoWAAAAsusSJAAAQDoggAEAAATWBgKYyz3qHlrW0F+aNwkAAILJ+ACWU7dFWz0nbUOYu7TVc5RTtyXqVgAAQJrI+En4hfVfqLZG2pJbIMmibqcJrpy6ahXWfxF1IwAAIE1kfACLyVVcXynVR90JAADA3sn4S5AAAACZhgAGAAAQGAEMAAAgMAIYAABAYAQwAACAwAhgAAAAgRHAAAAAAiOAAY3WVdXovJ/+XpUbaqNuBQDQxhHAgEYPzHhN61d/qj9Nnx11KwCANo4ABqhh9Gv6y3N117llmv7yXEbBAAApRQAD1DD6Nb4ipgHd8jW+IsYoGAAgpQhgyHo7Rr8mDiuUJE0cVsgoGAAgpQhgyHo7Rr/Kihr2pi8rymUUDACQUrlRNwBE7aX5S7Ry7VY9/M7ahHr5miW65tunRdQVAKAtiyyAmVkfSQ9I6iEpLmmKu98WVT/IXk/eOjnqFgAAWSbKEbA6Sde6+3wzK5b0hpk97+7vRdgTAABAykU2B8zdV7n7/MZfV0taJKlXVP0AAACEkhaT8M3sYElHS3o92k4AAABSL/IAZmZFkh6V9EN339jE85PMbJ6ZzZvyBHelAQCAzGfuHt2Lm+VJmi7pWXf/zR6/4bXbo2sWAABgb8XypFFXWLNPh+zly8zMJN0nadFehS8AAIA2IspLkKMlXSxprJm91fg1LsJ+AAAAgohsGQp3f1VSs0NzAAAAbVXkk/ABAACyDQEMAAAgMAIYAABAYAQwAACAwAhgAAAAgRHAAADIAOuqanTeT3+vyg21UbeCVkAAAwAgAzww4zWtX/2p/jSdbfnaAgIYAABpbl1Vjaa/PFd3nVum6S/PZRSsDSCAAQCQ5h6Y8ZrGV8Q0oFu+xlfEGAVrAwhgAACksR2jXxOHFUqSJg4rZBSsDSCAAQCQxnaMfpUVNeweWFaUyyhYGxDZXpAAAGDPXpq/RCvXbtXD76xNqJevWaJrvn1aRF3hQBHAAABIY0/eOjnqFpACXIIEAAAIjAAGAAAQGAEMQFCs5g0ABDAAgbGaNwAQwAAExGre2YuRTyARAQxAMKzmnb0Y+QQSEcAABMFq3tmLkU8gGQEMQBCs5p29GPkEkrEQK4AgWM07O+0Y/Zp2QbGkhpHPC6bN1XfGj1aX0sKIuwOiQwADEASreWenlkY+Cd7IZgQwAEDKMPIJNI0ABgBIGUY+gaYxCR8AACAwAhgAAEBgBDAAAIDACGAAAACBEcAAAAACI4ABYqNgAEBYBDBAbBQMAAiLAIasx0bBAIDQCGDIemwUDAAIjQCGrLZj9GvisIZNgScOK2QUDACQcgQwZLWWNgoGACBV2AsSWY2NggEAUSCAIauxUTAAIApcggQAAAiMAAYAABAYAQwAACAwAhgAAEBgkQYwM7vfzNaa2btR9gEAABBS1CNgf5R0RsQ9ABmPzcQBILNEGsDcfZakL6LsAWgL2EwcADJL1CNge2Rmk8xsnpnNm/IEP1yA3bGZOABknrQPYO4+xd1HuPuISV8fHXU7QNphM3EAyDxpH8AANI/NxAEgMxHAgAzGZuIAkJki3QvSzKZKOklSmZmtkHSju98XZU9AJmEzcQDITObuUfew9167PYOaBQAAWSuWJ426wpp9OmQvAAAAIIABAAAERwADAAAIjAAGAAAQGAEMAAAgMAIYAABAYAQwAACAwAhgAAAAgRHAAAAAAot0K6J99fGqyp2/NjMd1L2TzJpdZBYAACAtZVQAu2V+3s5fb9+6WbmrZmr4oWVJx50ytK8O7tE5ZGsAAAB7LaMC2NDTJyQ8rtmwXmtqqxNq7q5/e+IP6tZuUUK9ME/6twtHKS83J+V9AiGsq6rR5Tc/qCnXXawupYVRtwMA2AcZFcB2V1TaSUWlnZLq3S79WVJt3crl+v599ys/L/G3vLm2Rt8Z3UuDD0ocSetSWqh2eRn9x4NARl75O62r3ppULyvO15y7rkrZ6z4w4zWtX/2p/jR9tq759mkpex0AQOvLmoRRVt5XYy79eVLd3fXkS0/o0eVVCfWNH8/RuCN7JB1fUd5Jxw7snbI+kXnWVW/V4MtuTaovvOfa1L1mVY2mvzxXd51bpiunz9V3xo9mFAwAMkjWBLDmmJmOOPmfkupbNtXqw7WrkuovvfmCHn715YRLmfH6ev3o60NV3rU0pb0COzww4zWNr4hpQLd8ja/YwigYAGSYrA9gzSnoUKieB1ck1Zuqbdu6Rdf/5bcqsO0J9VKr1U/OGa7db9Rsn5+n9vntWrVfZI8do1/TLiiWJE0cVqgLpjEKBgCZhADWCtrlF2j0xOuS6p9/ulQ/fe7vSfWqFUt11pBO6pC/648/ZqavjawgmGGPdox+lRU1/P0pK8rV+IoYo2AAkEEIYCnUtU+FuvZJHjGLx+Nauux9yX1nbdvWzXrkjgfUu3P7hGPdXeNH9NVJR/ZNeb/IDC/NX6KVa7fq4XfWJtTL1ywhgAFAhjD/UghId/fMWpY5zbYSd9ebf7tf2rAiob69doN+/s3h6liUGNhiMWMULbCo7oIEAKSxWJ406opmV4sngGWozbXVevvpB6V44ryz2o1VOqZsmwb0SlyeY1hFT24SAAAgFAJY9ln18VJt3lSTUFv+yiPq3aEu6diBvTvpe189IlRrAABkhz0EMOaAtUFN3anZb9DQJo99f96LmnTPCwnLamzetFmXje2nY/r3TDo+l50EAAA4YIyAIYm7682n/6zN6z9PqMfj9eqyfY3GD+uVUC8vK9XAg5MXrQUAIGtxCRKtqXLNSlWuTrwh4PPFr6u05iMVtEscUC0uyNWPzxup/HZ5AgAgq3AJEq2pS/dydelenlA77KiRTR77xeoVuuyeO1TSoWBnzd01tDxfl51xVEr7BAAgnTEChuCWzv27Vi2am1Svr1qly8f2U+xLWwfkt8vViMMPku2+nQAAAOmMS5DIFJtqqrV88duSdr3Nm6s+17bFL6hXWXHCsWcM66uvDOoTuEMA+2tdVY0uv/lBTbnuYrbMQnbgEiQyRYeiYg0cMSapXn/S2XKPJ9T++Lf7NPX1OUnHluRu1y++dZxycmIp6xPAvntgxmtav/pTtswCGhHAkPZycpP/mh5z7pVNHrvmk6X63h+mKRbb9aFj6+ZNOqFvrkYc2jXp+CP6lasgn5sEgFTasYH8XeeW6crpbBwPSAQwtDHdD6pQ9+9en1T/eNGbWlJZmVCL19fr86dmaHCvkoR6Rc8SffPEwSntE8gmOzaQH9AtX+MrtjAKBogAhixx8MCjm6zXHTtWddsS93Gc+/ZsvXD3iypol7inZv22TbrxghHq2ilxPhqA5u0Y/Zp2QcO/m4nDCnXBNEbBAAIYslpubp5ycxMvQQ447nTpuNOTjt2yqVY/evR3yvFdWzq5u7rGNuii45N3H+jVtSM/YJD1dox+lRU1/LgpK8rV+IoYo2DIetwFCRygtSuWae1Hi5Lqa955RcPL2yXMRyvIi+myM4aqXR6ffZAdzr72Dq1cuy6pXt6tTE/eOjmCjoBAWIYCiEY8HlftxqqEWvX6z7X0qXvUpaQgob59e52+PeZgltYAgLaCAAakP3fX/L/dr+1VqxPq8ep1uvasQcrLSdwEvahDvnp17cjaSgCQrghgQOaqrd6gpXNfkCnxr37VZx/q0LxKLVj0oRa+954GDxqkU0YdoXNGVai8a2lE3QIAdmIhViBzFRaX6qix5zT53MqPP9CSmZfrlvMO0fUzKzWk//n6ySMPq2v7eNKxR/Qu1iVfPSLV7QIA9hIBDMhQi/8xU+cNytVxh5bovJXbtGTuSxo76ZdNHrvo9ef0/fvnSF/6LFa7oUpXnnywDuqWuA5aeVkpNwkAQIrxvyyQgaqrvtD7sx7Xjd9suNw4YVipvvWXxzVy3IUqKu2UdPxhx54mHZt4y388Htcjs55UfMXmnTV3qfqDv+ukgd2SznFUv+4acVh5K/9OACA7EcCADDT36b/orP5Sl8KGNcy6FObprP7SnKf+W2MnNL1N0+5isZiOPOmfkupbTjhba6oqk+q/n/2kil99RTHbtc9mvH67bvjGCJV1LNrP38m+48YDAG0BAQzIQB+8OVtvrt2ivyxYkVAvWj17rwNYcwo6FKqgQ3Kw6Xp+8ppNWzbV6Npp/0/5sfqEel1dnUYf1E7jRhySUC8pLFBh+/wD6o9NnQG0BZHeBWlmZ0i6TVKOpHvd/eaWjucuSCBzfDj/FW347MOEWuXHCzVuUEfl5SYuq9GlpEBnHNN/j+dcV1WjC35ym+4a30FXTt+kR275IaNgANJTui5DYWY5kpZI+qqkFZLmSprg7u819z0EMCCz1dfVae2Kj5PqlZ8sVu3CmSotar+zFq+P68Ixh+rYw3vtrP3moeekz97QNSeU6jezNki9hjMKBiA9pXEAO07Sz9z99MbH10mSu/+6ue8hgAHZw931xuN3y2rXSpI2b9miF559Wt8YXKCOBdKEowp16f/U6A+/uEKdSzooLydHxYUFezgrAASSxuuA9ZL06Zcer5B0bES9AEgzZqYR516x8/ELU+/SJV/pqsnHl2nJ6k16/P0NKsmL6+LbX9aQEaNUXblGx3avU58uiTcE5MRM40b2V367vN1fAgAi02IAM7MSSV3d/cPd6ke6+4IDfO2mUmHSCJeZTZI0SZIuuvYmnXD2hAN8WQCZqOkbDwpUVLhdI8+5XJK0+pNlWrB1S8L3bd1cq7/e8aDKO7VPqB/Vt7MuGjs41W0DQJOavQRpZhdI+r+S1krKk/Rdd5/b+Nx8dx92QC/MJUgAEVo8+ynVLJ2jWCzxs2Ddpo365YUjVNwh8W7NA717E0CWOYBLkNdLGu7uq8xspKQ/m9n17v6Ymh692ldzJfU3s0MkfSbpQknfaoXzAsAeHT56nDR6XFJ9U/VGXf/Mn2W+a2mN7du2q1vdSp00OHkh2hGHlatHl5KkOgC0pKUAluvuqyTJ3eeY2cmSpptZbzVxqXBfuXudmU2W9KwalqG4390XHuh5AeBAdCgu0XHnX5VUr1yzUrMr1yYW3fXQ1EfUpzBxHbROHfL04/NGKne35TYAYIeWLkG+JuniL8//MrNiSf8jaYy7Bx+P5xIkgEyw5pOl+uCZ+1XUvt3OWn08rtGHFGrCCQOTjs/JicmsNS4sAEgb+7sMhZkdL2mVuy/drZ4n6Tp3/0WrNroXCGAAMtn7/3hW65a9m1SPr1+uiaP7JoSw4g4FGjmob8j2ALSmAwhgyyTdLelWd69rrHWXdKukAe5+TArabREBDEBbVLuxSp99tCShVr36Y9UtfUVdShLv3oyZdPXXh6lbp+KQLQLYVwcQwDpJ+rWk0ZJ+IOkISddI+k9Jd7l7vPW7bRkBDEC227KpVnOn/qdK2iX+v16Wv13/fuEoxWKxZr4TQFAHuhK+mf1A0m8lrZQ0yt1XtPgNKUQAA4CmrVz6rj6cPT3pHvVNlav1vTG9VLrbshojB/VVu7wo1+IG2rj9XYbCzDpK+g81rE5/hqRxkp42sx+4+wut3iiAffLryRNUU1OdVC8qKtZ1d0yNoCNEqbxiiMorhiTV6+vq9MKCOfLN9V+qbdOdtz2uih7JlzHPHHFIwv6bAFKjpY8/8yXdKemqxjlgz5nZUEl3mtlyd2dJeiBCNTXV6vf925Pqy+795wi6QbrKyc3V4cO+klSPH3OS4vHE5TPcXfc+eY8e/MecxPq2Wt30rWPVsbhDSnsFsklLAeyE3S83uvtbkr5iZpelti0AQCrFcnIUy0lep2zkNyYn1WqrN+hf/nq3Yp4Y2LZsqtUp/dpp6CFlCfV+5WXqUlrYug0DbUyzAayluV7ufk9q2gEApJvC4lIdf/FPmnxu2cI39F7l+oTaquee05DuebLdJqQdVt5R5zexDhqQjZiBCQDYb/0GD0+qHT5yrLZt2ZRUf23+y/r7lFeVn5e3s7Zt21Zdfkp/Da3omdI+gXRDAAMAtKpYLKaCDkVJ9UFjzpTGnJlQi8fjuvOJe1Q36+2kes/cak0Yc2hCvVNxB/Xp3qn1mwYCI4ABGaqoqLjJCfdFRSzQicwRi8V0zDmXN/nc6uUf6L5PEheorVz2rvoXvKui9ruW1TC5Lj55kLqyOC0yyB7XAUsnrAOWvVhyAcAOtRurFI/vWgu8bvs2LXjsdpV1SJxz5u465uBSXTR2cOgWgf1fBwxIJyy5AGCHwpKOSbUTL/9Vk8e+9eoMvXj/Wwm12qpKTf5qP3UtSVxWIzcnpkN7d229RoEWEMAAAG3WgCbmndXX1emR2U8rvmp7Qn3zxvUqrJypw8oT55h9ZWAvHV3RI+W9IrsQwAAAWSUnN1dDTjyryedqqzeodsvmhNrtM6eq5JUPk5bV6NI+pusvGMn+m9gvBDAAABoVFpeqsLg0oXbchKubPHbVskW65N5pys3btaDtti1bdNphhRozKHk7p15dOyovN3nxW2QnAhgAAPuhZ7+B6tnvxqT6O2+8rH/MX5lQi8ddm5bO1AkDuyXUe5cV6/QRFSntE+mJAIaMwJILADJFxfATm6xv2XS21lR9kVB7a/E8PX7XiyosaJd4cH2dbrhghDqXsKVTW8UyFAAApJlNNdWa/9fblB9L/LHXM3+Lrjg9eVmN0qL26rB7iEO09rAMBQEMAIAMsXLpu1q9aF5SvfKjd3TmkC7Kzdl1Q0Bebkznjj5cucw7iwbrgAEA0DaUVwxRecWQpHpd3XYtX7E8oVa78Qs9eftD6t4xcb2zeH1c3z6hQiMOK09pr2gZI2AAAGQRd9e8x+5UbFNlYn3zBt14/nAV5O8am4mZqWNxh91Pgb3BCBgAANjBzHTMeVcl1aurKnXji49K2jXWsXVTrXrFV2n4ock7BJx0ZF+VdUzedB17hxEwAMgC7KeK/VW5ZqU2baxKqMU9rmUz/6xexYkDPF2L2+lH5x7D4rQSI2AAAPZTxf7r0r1cXbonzxfre9h/JNVWfrhQl06ZqoL8vIT65ppqXT3ucFWUd06ot8/Py9qwRgADAACtovzQwSo/9Kakery+Xnc+9WfVvb5iZ83d5euW6byRByUd379XZw04qFtSvS0hgAEAgJSK5eRoxFnfTarXbFiv2Z8tT6pPe2GmyuoWKjdn1xIaOSb963kj2sxNAQQwAAAQiaLSTioq7ZRU7zdoaFJtU/VG/ctDt6o4P3FaVV19vU7uX6JvjB6QUI/FLK0vbxLAAABA2utQXKLjv//zJp+b8+oMPfPQ4oRazdpP9N3RvVXQLnEh2tLCAh0zsG/K+txbBDAAyALsp4q2bOCYM6UxZybU6rZv06z33k46dsOHH2rKc8+oc0n7nTV314QTDtfRFT1S3usOLEMBAGgSS1cgW8Tjcc2Zdpvab9+Q9FyP9vW64ZvHyqzZFSWaxjIUAID9wdIVyBaxWEyjLry6yedWfrBA37n/KelLUWrzxiqNO7xI/XuWJBw7+JCe6lSydzcJEMAAAACaUd7/SJX3PzKpvmThfL2zuXZXwV233/uEBnRrJ0lql9dO/2fUFc2elwAGAACwj/oNHpZUGzB8jOL1dZKk3JyWL1kSwAAAAFpBLBZTLNYwAranAJa+C2QAAAC0UYyAIStwNxew71i6AkgdAhiyAndzAfuODydA6nAJEgAAIDACGAAAQGAEMAAAgMAIYAAAAIFFMgnfzM6X9DNJAyWNdPd5UfSB7MHdXACAdBLVXZDvSjpX0t0RvT6yDHdzAQDSSSQBzN0XSdr3ncUBAADagLSfA2Zmk8xsnpnNm/UkoxgAACDzpWwEzMxmSurRxFM3uPsTe3sed58iaYok3TNrmbdSe0gRVpwHAGDPUhbA3P3UVJ0b6YsV59EW8EECQKqxFREA7IYPEgBSLZI5YGZ2jpmtkHScpBlm9mwUfQAAAEQhqrsgH5f0eBSvDQAAELW0vwsSAACgrWEOGFoVK84DALBnBDC0Ku4QQ1vABwkAqUYAA4Dd8EECQKoxBwwAACAwAhgAAEBgBDAAAIDACGAAAACBEcAAAAACI4ABAAAERgADAAAIjAAGAAAQGAEMAAAgMAIYAABAYAQwAACAwAhgAAAAgRHAAAAAAiOAAQAABEYAAwAACIwABgAAEBgBDAAAIDACGAAAQGAEMAAAgMAIYAAAAIERwAAAAAIjgAEAAARGAAMAAAiMAAYAABAYAQwAACAwAhgAAEBgBDAAAIDACGAAAACBEcAAAAACI4ABAAAERgADAAAIjAAGAAAQGAEMAAAgMAIYAABAYAQwAACAwAhgAAAAgRHAAAAAAiOAAQAABBZJADOzW8xssZktMLPHzaxjFH0AAABEIaoRsOclDXH3IyUtkXRdRH0AAAAEF0kAc/fn3L2u8eH/SuodRR8AAABRyI26AUmXSPpLc0+a2SRJkyTpomtv0glnTwjVFwCkhV9PnqCamuqkelFRsa67Y2oEHQE4UCkLYGY2U1KPJp66wd2faDzmBkl1kh5q7jzuPkXSFEm6Z9YyT0GrAJDWamqq1e/7tyfVl937zxF0A6A1pCyAufupLT1vZt+RNF7SKe5OsAIAAFkjkkuQZnaGpH+VdKK7b4qiBwAAgKhEdRfkHZKKJT1vZm+Z2e8j6gMAACC4SEbA3L0iitcFAABIB+lwFyQAoAVFRcVNTrgvKiqOoBsArYEABgBpjqUmgLaHvSABAAACI4ABAAAERgADAAAIjAAGAAAQGJPwAaQ19kEE0BYRwACkNfZBBNAWcQkSAAAgMAIYAABAYAQwAACAwAhgAAAAgTEJH0BaYx9EAG0RAQxAWmOpCQBtEZcgAQAAAiOAAQAABEYAAwAACIwABgAAEBgBDAAAIDACGAAAQGAEMAAAgMAIYAAAAIERwAAAAAIjgAEAAARGAAMAAAiMAAYAABAYAQwAACAwAhgAAEBgBDAAAIDACGAAAACBEcAAAAACI4ABAAAERgADAAAIjAAGAAAQGAEMAAAgMAIYAABAYAQwAACAwAhgAAAAgRHAAAAAAiOAAQAABEYAAwAACCySAGZmvzSzBWb2lpk9Z2blUfQBAAAQhahGwG5x9yPdfaik6ZL+PaI+AAAAgoskgLn7xi89LJTkUfQBAAAQhdyoXtjMfiVpoqQNkk6Oqg8AAIDQUjYCZmYzzezdJr6+LknufoO795H0kKTJLZxnkpnNM7N5s56cmqp2AQAAgjH3aK/+mVlfSTPcfciejr1n1jIuVQIAgLSXm2P63uhDrLnno7oLsv+XHp4taXEUfQAAAEQhqjlgN5vZAElxScslXRFRHwAAAMFFEsDc/bwoXhcAACAdsBI+AABAYAQwAACAwAhgAAAAgRHAAAAAAiOAAQAABEYAAwAACIwABgAAEBgBDAAAIDACGAAAQGBRbUW0X8qK20XdAgAAwB7lxloe4zJ3D9QK9oaZTXL3KVH3gT3jvcosvF+Zg/cqs/B+7R8uQaafSVE3gL3Ge5VZeL8yB+9VZuH92g8EMAAAgMAIYAAAAIERwNIP19EzB+9VZuH9yur3+IgAAANXSURBVBy8V5mF92s/MAkfAAAgMEbAAAAAAiOApRkzO9/MFppZ3MxGRN0PmmZmZ5jZ+2a21Mx+GnU/aJ6Z3W9ma83s3ah7QcvMrI+ZvWhmixr/H/xB1D2heWZWYGZzzOztxvfr51H3lEkIYOnnXUnnSpoVdSNompnlSPqdpK9JGiRpgpkNirYrtOCPks6IugnslTpJ17r7QEmjJF3Fv620tlXSWHc/StJQSWeY2aiIe8oYBLA04+6L3P39qPtAi0ZKWuruy9x9m6T/lvT1iHtCM9x9lqQvou4De+buq9x9fuOvqyUtktQr2q7QHG9Q0/gwr/GLieV7iQAG7Ltekj790uMV4ocE0KrM7GBJR0t6PdpO0BIzyzGztyStlfS8u/N+7aWM2guyrTCzmZJ6NPHUDe7+ROh+sM+siRqf+oBWYmZFkh6V9EN33xh1P2ieu9dLGmpmHSU9bmZD3J35lnuBABYBdz816h5wQFZI6vOlx70lrYyoF6BNMbM8NYSvh9z9saj7wd5x9yoze0kN8y0JYHuBS5DAvpsrqb+ZHWJm7SRdKOnJiHsCMp6ZmaT7JC1y999E3Q9aZmZdG0e+ZGbtJZ0qaXG0XWUOAliaMbNzzGyFpOMkzTCzZ6PuCYncvU7SZEnPqmGS8DR3XxhtV2iOmU2V9A9JA8xshZldGnVPaNZoSRdLGmtmbzV+jYu6KTSrp6QXzWyBGj6YPu/u0yPuKWOwEj4AAEBgjIABAAAERgADAAAIjAAGAAAQGAEMAAAgMAIYAABAYAQwAFnDzPqY2Udm1rnxcafGx33N7BkzqzIzbqMHkHIEMABZw90/lXSXpJsbSzdLmuLuyyXdooY1qAAg5QhgALLNbyWNMrMfShoj6VZJcve/S6qOsjEA2YO9IAFkFXffbmY/lvSMpNPcfVvUPQHIPoyAAchGX5O0StKQqBsBkJ0IYACyipkNlfRVSaMkXW1mPSNuCUAWIoAByBpmZmqYhP9Dd/9EDRPv/yvargBkIwIYgGxymaRP3P35xsd3SjrczE40s1ckPSLpFDNbYWanR9YlgDbP3D3qHgAAALIKI2AAAACBEcAAAAACI4ABAAAERgADAAAIjAAGAAAQGAEMAAAgMAIYAABAYAQwAACAwP4/Pchxu9p4CskAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# for plotting decision boundary i have used mlxtend library\n",
    "plt.figure(figsize = (10,6))\n",
    "plot_decision_regions(np.array(df.drop('y',axis=1)), np.array(df['y']), clf=svm, legend=2)\n",
    "\n",
    "plt.xlabel('X1')\n",
    "plt.ylabel('X2')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "http://rasbt.github.io/mlxtend/user_guide/plotting/plot_decision_regions/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x18244417978>"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# adding support vectors to the graph\n",
    "plt.figure(figsize = (10,6))\n",
    "plot_decision_regions(np.array(df.drop('y',axis=1)), np.array(df['y']), clf=svm, legend=2)\n",
    "sns.scatterplot(svm.support_vectors_[:,0],svm.support_vectors_[:,1],marker='*',s = 500,color = 'black',label = 'Support Vectors')\n",
    "plt.xlabel('X1')\n",
    "plt.ylabel('X2')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using a lower value of C. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets see what different we will have when we use a lower value of the paramter C"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'X2')"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "svm = SVC(kernel='linear',C = 1)\n",
    "svm.fit(df.drop('y',axis = 1),df['y'])\n",
    "\n",
    "# for plotting decision boundary i have used mlxtend library\n",
    "plt.figure(figsize = (10,6))\n",
    "plot_decision_regions(np.array(df.drop('y',axis=1)), np.array(df['y']), clf=svm, legend=2)\n",
    "\n",
    "plt.xlabel('X1')\n",
    "plt.ylabel('X2')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1824452b0b8>"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# adding support vectors to the graph\n",
    "plt.figure(figsize = (10,6))\n",
    "plot_decision_regions(np.array(df.drop('y',axis=1)), np.array(df['y']), clf=svm, legend=2)\n",
    "sns.scatterplot(svm.support_vectors_[:,0],svm.support_vectors_[:,1],marker='*',s = 500,color = 'black',label = 'Support Vectors')\n",
    "plt.xlabel('X1')\n",
    "plt.ylabel('X2')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see that now we have more number of support vectors as compared to the last time."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using cross validation to select the best value of C"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For this i will be using gridsearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=10, error_score='raise-deprecating',\n",
       "             estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
       "                           decision_function_shape='ovr', degree=3,\n",
       "                           gamma='auto_deprecated', kernel='linear',\n",
       "                           max_iter=-1, probability=False, random_state=None,\n",
       "                           shrinking=True, tol=0.001, verbose=False),\n",
       "             iid='warn', n_jobs=None,\n",
       "             param_grid={'C': [0.001, 0.01, 0.1, 1, 5, 10, 100]},\n",
       "             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,\n",
       "             scoring=None, verbose=0)"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm = SVC(kernel='linear')\n",
    "search = GridSearchCV(svm,{'C':[0.001, 0.01, 0.1, 1,5,10,100]},cv=10)\n",
    "search.fit(df.drop('y',axis=1),df['y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'C': 0.001}"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "search.best_params_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case, the best value of C is 0.001, in book it is 0.01, but remember the way data is choosen is different in both of the cases"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_model = search.best_estimator_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Cheking the performance of the best model on test data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For that lets first of all create a test data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(1)\n",
    "X_test = np.random.normal(size = (20,2))\n",
    "y_test = np.array([0]*10 + [1]*10)  #maked an array which has ten 0, and ten 1 \n",
    "\n",
    "X_test[y_test==1,] = X_test[y_test==1,] + 1 \n",
    "df_test = pd.DataFrame({'X1':X_test[:,0],'X2':X_test[:,1],'y':y_test})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy score is  0.95\n",
      "Confusion Matrix is -\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[ 9,  1],\n",
       "       [ 0, 10]], dtype=int64)"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#lets see the accuracy and confusion matrix on test data by best_model\n",
    "preds = best_model.predict(df_test.drop('y',axis=1))\n",
    "print('Accuracy score is ',accuracy_score(y_test,preds))\n",
    "\n",
    "print('Confusion Matrix is -')\n",
    "confusion_matrix(y_test,preds)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using the case where the classes are linearily separable (barely)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [],
   "source": [
    "#set seed \n",
    "np.random.seed(1)\n",
    "X = np.random.normal(size = (20,2))\n",
    "y = np.array([0]*10 + [1]*10)  #maked an array which has ten 0, and ten 1 \n",
    "\n",
    "X[y==1,] = X[y==1,] + 1.4 \n",
    "# The reason is to make the classes more separable than before"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.624345</td>\n",
       "      <td>-0.611756</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.528172</td>\n",
       "      <td>-1.072969</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.865408</td>\n",
       "      <td>-2.301539</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.744812</td>\n",
       "      <td>-0.761207</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.319039</td>\n",
       "      <td>-0.249370</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         X1        X2  y\n",
       "0  1.624345 -0.611756  0\n",
       "1 -0.528172 -1.072969  0\n",
       "2  0.865408 -2.301539  0\n",
       "3  1.744812 -0.761207  0\n",
       "4  0.319039 -0.249370  0"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#making a dataframe\n",
    "df = pd.DataFrame({'X1':X[:,0],'X2':X[:,1],'y':y})\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x182487b93c8>"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (10,6))\n",
    "sns.scatterplot(df['X1'],df['X2'],hue = df['y'],s = 80) # s controls the size of the points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=10000, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='auto_deprecated',\n",
       "    kernel='linear', max_iter=-1, probability=False, random_state=None,\n",
       "    shrinking=True, tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 178,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#using a very high value of C\n",
    "svm = SVC(kernel='linear',C = 10000)\n",
    "svm.fit(df.drop('y',axis = 1),df['y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'X2')"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# for plotting decision boundary i have used mlxtend library\n",
    "plt.figure(figsize = (10,6))\n",
    "plot_decision_regions(np.array(df.drop('y',axis=1)), np.array(df['y']), clf=svm, legend=2)\n",
    "\n",
    "plt.xlabel('X1')\n",
    "plt.ylabel('X2')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using smaller value of cost on this data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=1, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='auto_deprecated',\n",
       "    kernel='linear', max_iter=-1, probability=False, random_state=None,\n",
       "    shrinking=True, tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#using a very high value of C\n",
    "svm = SVC(kernel='linear',C = 1)\n",
    "svm.fit(df.drop('y',axis = 1),df['y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'X2')"
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# for plotting decision boundary i have used mlxtend library\n",
    "plt.figure(figsize = (10,6))\n",
    "plot_decision_regions(np.array(df.drop('y',axis=1)), np.array(df['y']), clf=svm, legend=2)\n",
    "\n",
    "plt.xlabel('X1')\n",
    "plt.ylabel('X2')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see that one observation is misclassified when using C = 1, however there were no misclassifications when C was large"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
